![]() |
![]() |
|
rtk 20092009.1.1 - dopolniKolikokrat najmanjši 1. podnalogaNalogaNapisana je funkcija
Vhodni podatkitekstovna datoteka
Izhodni podatkiinteger Uradna rešitevdef kolikokratNajmanjsi(datoteka): '''prebere datoteko in izpiše število pojavitev najmenjšega števila v zaporedju''' dat = open(datoteka, 'r', encoding='utf-8').readlines() zaporedje = [] for vrstica in dat[1:]: zaporedje.append(int(vrstica.strip('\n'))) minSt = min(zaporedje) return sum(1 for x in zaporedje if x == minSt) 2009.1.3 - dopolni1. podnalogaRecimo, da bi radi citirali razne strani iz neke knjige; to naredimo tako, da naštejemo številke teh strani v strogo naraščajočem vrstnem redu, na primer 2, 5, 6, 8, 11, 28, 29, 30, 31, 67. Če se v tem seznamu kdaj pojavita dve ali več zaporednih strani, ga lahko zapišemo krajše: obdržimo le prvo in zadnjo številko strani iz take skupine več zaporednih številk, med njiju pa zapišimo vezaj: 2, 5–6, 8, 11, 28–31, 67. NalogaNapisana je funkcija funkcijo
Vhodni podatkiSeznam integerjev s številkami strani
V seznamu so številke strani že podane v naraščajočem vrstnem redu, vse pa so cela števila, večja od 0. Predpostaviš lahko, da je v vhodnem seznamu vsaj ena številka in da se nobena številka v njem ne pojavi več kot enkrat. Izhodni podatkiSeznam nizov s strnjenimi zaporednimi stranmi.
Uradna rešitevdef citiraj(sezStrani): '''v seznamu skrči zaporedne številke strani npr. 1,2,3,4 v 1-4 in vrne nov seznam''' sezSkrcen = [] sezStrani.append(0) # dodamo, da ne bo problemov z indeksi i = 0 while i < len(sezStrani) - 1: # preverimo naslednjo if sezStrani[i] == sezStrani[i + 1] - 1: Od = sezStrani[i] Do = sezStrani[i + 1] # preverimo, do kam gre zaporedje for j in range(i, len(sezStrani) - 1): if sezStrani[j + 1] == sezStrani[j + 2] - 1: Do = sezStrani[j + 2] else: break sezSkrcen.append(str(Od) + '-' + str(Do)) i += Do - Od + 1 else: sezSkrcen.append(str(sezStrani[i])) i += 1 return sezSkrcen 2009.1.4 - dopolni2009.2.1 - dopolniMesto objave ob koncu projekta 15.9.2018 |